// const showDecorator:MethodDecorator = (...args:any[]) => {
//     // console.log(args);  //args中包含三个元素，第一个：如果修饰的方法是静态方法，为构造函数；如果修饰的方法为普通方法，为原型对象
//                            //args中包含三个元素，第二个：方法名
//                            //args中包含三个元素，第三个：对象，第一个属性是函数的具体内容，第二个属性writable(方法是否可修改)，第三个属性enumerable(方法是否可查看)，第四个属性configurable(方法是否可增删)

//     args[0].name = "后盾人";
//     args[2].value = () => {
//         console.log("hdms");
//     }
// }

const showDecorator:MethodDecorator = (target:Object, propertyKey:string | symbol,descriptor:PropertyDescriptor) => {
    target.name = "后盾人";
    descriptor.value = () => {
        console.log("hdms");
    }
}

class User{
    @showDecorator
    public show(){
        console.log('houdunren.com');
    }
}

console.log(new User().name);   //证明元素一是原型对象，所以show方法为普通方法
new User().show();                 //证明元素三的value是函数内容